[실기] (PART 10) 애플리케이션 테스트 관리
NOTE
정보처리기사 실기 PART 10 — 테스트 원리, 화이트/블랙박스 테스트, 통합 테스트 등 애플리케이션 테스트 관리 핵심 정리.
📌 개념
- 소프트웨어 테스트 원리
- 결함집중 : 오류의 80%는 전체모듈의 20%에서 발견 (파레토법칙)
- 살충제 패러독스 : 동일 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
- 오류-부재의 궤변 : 결함이 없다고해서 품질이 높은게 아님
- 완벽 테스팅은 불가능
- 초기집중 : 초기에 오류를 찾아야지 후반에 찾으면 걷잡을 수 없는 비용이 듬 ( 요르돈의 법칙 )
- 정황의존성 : 정황과 도메인에 따라 다르게 테스트
- 소프트웨어 테스트 산출물
- 테스트 계획서 : 테스트 범위, 대상시스템 구조 파악 등 테스트 수행을 계획한 문서
- 테스트 베이시스 : 테스트 설계를 위한 기준이 되는 문서
- 테스트 케이스 : 테스트를 위한 설계 산출물
- 테스트 슈트 : 실행 환경에 따라 구분해 놓은 테스트케이스 집합
- 테스트 시나리오 : 테스트 시나리오가 테스트케이스 여러개를 가질 수 있음
- 테스트 스크립트 : 테스트 케이스의 실행 순서를 작성
- 테스트 결과서 : 리포팅 문서
- 프로그행여부에 따른 분류
- 정적 테스트 : 실행x, 구조 분석
- 동료 검토 : 동료 2,3명
- 워크 스루 : 회의 전
- 인스펙션 : 다른 전문가들
- 동적 테스트 : 실행 후 결함 검출
- 정적 테스트 : 실행x, 구조 분석
- 화이트박스 테스트
- 구문 커버리지 : 모든 명령문 적어도 한번씩 수행
- 결정 커버리지 : 결정포인트 내의 전체 조건식이 적어도 한번은 참 or 거짓
- 조건 커버리지 : 개별조건식이 적어도 한번은 참 or 거짓
- 조건/결정 커버리지 : 결정 + 조건 커버리지
- 변경 조건/결정 커버리지 : 전체 조건식 + 개별 조건식 참 and 거짓 한번씩, 전체조건식에 독립적으로 영향
- 다중 조건 커버리지 : 모든 개별 조건식의 가능한 조합 100%
- 기본 경로 커버리지 : 모든 경로 테스트
- 제어 흐름 테스트 : 제어 구조 그래프 형태
- 데이터 흐름 테스트 : 제어 흐름 그래프에 데이터 사용현황 추가
- 루프 테스트 : 반복 구조에 초점을 맞춰 실시
- 블랙박스테스트
- 동등분할 테스트 : 대푯값
- 경곗값 분석 테스트 : 최솟값 바로 위, 최대치 바로 아래
- 결정 테이블 테스트 : 조건과 행위를 모두 조합
- 상태 전이 테스트 : 다른 상태로 전이되는 경우의 수
- 유스케이스 테스트 : 프로세스 흐름을 기반으로 테스트 케이스 명세화
- 분류 트리 테스트 : 트리구조로 분석 및 표현
- 페어와이즈 테스트 : 테스트 데이터 값들 간에 최소한 한번씩 조합
- 원인-결과 그래프 테스트 : 그래프를 활용하여 출력에 미치는 영향
- 비교 테스트 : 같은 입력값을 넣어서 동일 출력
- 오류 추정 테스트 : 개발자가 범할 수 있는 실수 추정
- 테스트 목적에 따른 분류
- 회복 테스트 : 고의로 실패 유도
- 안전 테스트 : 파괴하지 못하도록
- 성능 테스트 : 시스템 응답시간
- 부하테스트 : 부하를 계속 증가
- 강도테스트 : 임계점 이상의 부하
- 스파이크테스트 : 짧은 시간에 사용자 몰릴 때
- 내구성테스트 : 오랜시간동안 부하
- 구조 테스트 : 내부 논리 경로, 복잡도 평가
- 회귀 테스트 : 오류 제거, 수정한 시스템 오류가 없는지 확인
- 병행 테스트 : 동일한 데이터 입력후 결과 비교
- 테스트 종류에 따른 분류
- 명세 기반 테스트 : 명세서 기반 테스트
- 구조 기반 테스트 : 내부 논리 흐름에 따라 테스트
- 경험 기반 테스트 : 테스터의 경험을 토대로 테스트
- 테스트 커버리지 개념
- 기능 기반 커버리지 : 애플리케이션 전체 기능을 모수로
- 라인 커버리지 : 소스 코드 라인 수를 모수로
- 코드 커버리지 : 일반적인 테스트 커버리지
- 테스트 오라클
- 참 오라클 : 기대하는 결과를 생성 (발생된 오류 모두 검출)
- 샘플링 오라클 : 몇개의 입력값에 대해서만 기대한 결과 제공
- 휴리스틱 오라클 : 몇개의 입력값에 대해서 기대한 결과 제공 + 휴리스틱(추정)으로 나머지 처리
- 일관성 검사 : 애플리케이션 변경시 전과 후의 결과값이 동일
- 테스트 레벨의 종류
- 단위테스트 (개발) : 사용자 요구사항, 단위 모듈
- 통합테스트 (설계) : 컴포넌트 간의 상호 작용
- 시스템 테스트 (기계 명세 분석) : 통합된 단위시스템 정상적 수행 검증
- 인수 테스트 (요구사항 분석) : 계약상의 요구사항 만족 확인
- 알파테스트 : 개발자 + 사용자
- 베타테스트 : 사용자
- 통합테스트 수행 방법
- 상향식 테스트
- 테스트 드라이버
- 하향식 테스트
- 테스트 스텁
- 빅뱅테스트 : 모든 모듈 동시 테스트
- 샌드위치 테스트 : 하향식 + 상향식
- 상향식 테스트
- 테스트 하네스
- 테스트를 지원하기 위한 코드와 데이터를 말함
- 테스트 하네스 구성요소
- 테스트 드라이버
- 테스트 스텁
- 테스트 슈트 : 테스트 대상 컴포넌트나 모듈
- 테스트 케이스 : 입력값, 실행 조건, 기대 결과 등의 집합
- 테스트 시나리오
- 테스트 스크립트 : 자동화된 테스트 실행 절차
- 목 오브젝트 : 조건부로 사전에 입력
- 결함관리 프로세스
- 결함 관리 계획
- 결함 기록
- 결함 검토
- 결함 수정
- 결함 재확인
- 결함 상태 추적 및 모니터링
- 최종 결함 분석 및 보고서 작성
- 결함 심각도별 분류
- 치명적결함 : 테스트를 완전히 방해 및 못하게 하는 결함
- 주요 결함 : 기능 다르게 동작
- 보통 결함 : 일부 기능 부자연
- 경미한 결함 : 사용상 불편
- 단순 결함 : 사소한 버그
- 애플리케이션 성능 측정 지표
- 처리량
- 응답시간
- 경과시간
- 자원 사용률
- 배드코드
- 외계인 코드 : 아주 오래 or 개발자 x → 유지보수 힘듬
- 스파게티 코드 : 정상작동 but, 코드 파악은 어려움
- 알 수 없는 변수명
- 로직 중복
- 소스코드 품질 분석 도구 유형
- 정적 분석 도구 : 코드 실행 x
- 동적 분석 도구 : 코드 실행
- 리펙토링 : 기능 변경하지 않고, 복잡한 소스코드 수정